// 文件名称：index.js
// 完整保存路径：miniprogram/pages/index/index.js
// 功能说明：首页逻辑控制
// 使用说明：处理页面跳转和初始化逻辑

const { wechatLogin, testLogin, isLoggedIn, getUserProfile, isStudentBound } = require('../../utils/auth.js');

Page({
  data: {
    isLoggedIn: false,
    userInfo: null,
    studentInfo: null,
    loading: true
  },

  /**
   * 页面初始化事件
   */
  onLoad() {
    console.log('主功能页面加载完成');
    this.checkLoginStatus();
  },

  /**
   * 页面显示事件
   */
  onShow() {
    this.checkLoginStatus();
  },

  /**
   * 检查登录状态
   */
  async checkLoginStatus() {
    try {
      this.setData({ loading: true });
      
      if (isLoggedIn()) {
        // 已登录，获取用户信息
        const userInfo = await getUserProfile();
        this.setData({
          isLoggedIn: true,
          userInfo: userInfo,
          studentInfo: userInfo.student, // 修改字段名
          loading: false
        });
      } else {
        // 未登录
        this.setData({
          isLoggedIn: false,
          userInfo: null,
          studentInfo: null,
          loading: false
        });
      }
    } catch (error) {
      console.error('检查登录状态失败:', error);
      this.setData({
        isLoggedIn: false,
        userInfo: null,
        studentInfo: null,
        loading: false
      });
    }
  },

  /**
   * 微信登录
   */
  async handleLogin() {
    try {
      wx.showLoading({ title: '登录中...' });
      const loginResult = await wechatLogin();
      console.log('登录成功:', loginResult);
      
      // 登录成功后重新检查状态
      await this.checkLoginStatus();
      
      wx.hideLoading();
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      });
    } catch (error) {
      wx.hideLoading();
      console.error('登录失败:', error);
      wx.showToast({
        title: error.message || '登录失败',
        icon: 'error'
      });
    }
  },

  /**
   * 测试登录
   */
  async handleTestLogin() {
    try {
      wx.showLoading({ title: '测试登录中...' });
      const loginResult = await testLogin();
      console.log('测试登录成功:', loginResult);
      
      // 登录成功后重新检查状态
      await this.checkLoginStatus();
      
      wx.hideLoading();
      wx.showToast({
        title: '测试登录成功',
        icon: 'success'
      });
    } catch (error) {
      wx.hideLoading();
      console.error('测试登录失败:', error);
      wx.showToast({
        title: error.message || '测试登录失败',
        icon: 'error'
      });
    }
  },

  /**
   * 检查绑定状态
   */
  checkBindingStatus() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'error'
      });
      return false;
    }
    
    if (!this.data.studentInfo) {
      wx.showModal({
        title: '学生信息未绑定',
        content: '使用此功能需要先绑定学生信息，是否立即绑定？',
        confirmText: '立即绑定',
        cancelText: '稍后再说',
        success: (res) => {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/bind/bind'
            });
          }
        }
      });
      return false;
    }
    
    return true;
  },

  /**
   * 跳转到数据查询页
   */
  navigateToQuery() {
    if (!this.checkBindingStatus()) {
      return;
    }
    
    wx.navigateTo({
      url: '/pages/query/query'
    });
  },

  /**
   * 跳转到数据上传页
   */
  navigateToUpload() {
    if (!this.checkBindingStatus()) {
      return;
    }
    
    wx.navigateTo({
      url: '/pages/upload/upload'
    });
  },

  /**
   * 跳转到个人中心
   */
  navigateToProfile() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'error'
      });
      return;
    }
    
    wx.navigateTo({
      url: '/pages/profile/profile'
    });
  },

  /**
   * 跳转到学生绑定页面
   */
  navigateToBind() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'error'
      });
      return;
    }
    
    wx.navigateTo({
      url: '/pages/bind/bind'
    });
  },

  /**
   * 跳转到社交分享页面
   */
  navigateToSocial() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'error'
      });
      return;
    }
    
    wx.navigateTo({
      url: '/pages/social/social'
    });
  },

  /**
   * 跳转到通知中心页面
   */
  navigateToNotification() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'error'
      });
      return;
    }
    
    wx.navigateTo({
      url: '/pages/notification/notification'
    });
  },

  /**
   * 返回欢迎页
   */
  backToWelcome() {
    wx.redirectTo({
      url: '/pages/welcome/welcome'
    });
  }
});